#!/usr/bin/perl

=pod
pipe 和open 一样也可以用来创建连接到另一程序的文件句柄，在别的地方一般不太用到，一般想法如下：
父进程调用fork创建子进程，子进程对文件句柄(READER, WRITE)中的一个文件句柄重新打开STDOUT或STDIN，
然后子进程对所要求的程序调用exec，程序具有参数。
=cut

$cmd = shift;
$args = "-l"
pipe(READER, WRITER) or die "pipe no good: $!";
my $child = fork();
die "Cannot fork: $!" unless defined $child;
if($child == 0){
    close READER;
    open(STDOUT, ">&WRITER");
    exec $cmd, $args;
    die "exec failed: $!";
}
close WRITER;